package com.cacho.s2b.lesson.learn;

import java.util.ArrayList;
import java.util.List;

// ArrayList对象不能存储基本类型(但是存储基本数据类型对应的包装类型是可以的)，只能存储引用类型的数据(String,class)
// ArrayList是List接口的一个实现类
/**
 * @Description java.util.ArrayList 是大小可变的数组的实现
 * 特点 列表（Lists）Java 提供了多种列表实现，如 ArrayList 和 LinkedList
 * @Author LingWei
 * @date 2023/12/14
 **/
public class LearnLists {
    public static void main (String[] args){
        List<String> list1 = new ArrayList<>();  // List对象
        ArrayList<String> list2 = new ArrayList<>(); //创建一对象则保留了ArrayList的所有属性
        System.out.println(list2); // []
        list2.add("s1");
        list2.add("s2");
        list2.add("s3");
        System.out.println(list2); // [s1, s2, s3]
        System.out.println("返回指定索引处的第1个元素:"+list2.get(0));
        System.out.println("返回指定索引处的第3个元素:"+list2.get(2));
        System.out.println("返回集合中的元素的个数:"+list2.size());
        System.out.println("删除索引处元素并返回删除的元素:"+list2.remove(0));
        // 遍历输出所有列表元素
        for (String s : list2) {
            System.out.println(s);
        }
        // 存储基本数据类型对应的包装类型
        ArrayList<Integer> list3 = new ArrayList<>();
        list3.add(1);
        list3.add(2);
        list3.add(3);
        System.out.println("直接可以打印列表："+list3); // [1, 2, 3]
        // 引用类型的数据(class)
        ArrayList<LearnClass> list = new ArrayList<LearnClass>();
        // 只能调用构造函数去创建对象，对
        LearnClass learn1 = new LearnClass();
        LearnClass learn2 = new LearnClass("方法二");
        list.add(learn1);
        list.add(learn2);
        System.out.println(list);
        for (LearnClass learn : list) {
            System.out.println(learn.getWay());
        }
    }
}